<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>java.nio软件包 </title>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="renderer" content="webkit"/>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet">
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
  <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.min.js"></script>
</head>
<body>
<header class="container-fluid">
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
    <a class="navbar-brand" href="../index.html">
      <svg class="bi bi-x-diamond-fill text-info" width="1em" height="1em" viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
        <path fill-rule="evenodd" d="M9.05.435c-.58-.58-1.52-.58-2.1 0L4.047 3.339 8 7.293l3.954-3.954L9.049.435zm3.61 3.611L8.708 8l3.954 3.954 2.904-2.905c.58-.58.58-1.519 0-2.098l-2.904-2.905zm-.706 8.615L8 8.707l-3.954 3.954 2.905 2.904c.58.58 1.519.58 2.098 0l2.905-2.904zm-8.615-.707L7.293 8 3.339 4.046.435 6.951c-.58.58-.58 1.519 0 2.098l2.904 2.905z"/>
      </svg>
	  我的博客
    </a>
   <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <div class="navbar-nav mr-auto">
        <a class="nav-item nav-link" 
           href="../hololive/index.html">二期生</a><a class="nav-item nav-link" 
           href="../nio/index.html">Nio三大核心</a><a class="nav-item nav-link" 
           href="../Study/index.html">今日复习MarkDown组件</a><a class="nav-item nav-link" 
           href="../JavaApi/index.html">nio包</a><a class="nav-item nav-link" 
           href="../Anime/index.html">青春校园类</a>
        
        
        
      </div>
    </div>

    <div class="" id="navbarSupportedContentUser">
      <div class="navbar-nav mr-auto" >
        <a class="nav-item nav-link" href="../../myweb/createQR.html">二维码生成</a>
        <a class="nav-item nav-link" href="../../myweb/showAllUser">用户列表</a>
        <a class="nav-item nav-link" href="../../myweb/reg.html">修改密码</a>
      </div>
    </div>
  </nav>
</header>

<div class="container-fluid text-center py-3 bg-dark">
    <h1 class="font-weight-normal text-center text-white ">我的博客</h1>
    <p class="font-weight-normal text-center text-white ">编程也可以很好玩</p>
</div>

<div class="container-fluid bg-light">
  <div class="row">
    <div class="col-8 col-offset-2">
      <div  class="container bg-white py-2 my-5 mb-3">
	    <!-- 标题区域 -->
        <h2 class="font-weight-normal text-center mb-1">java.nio软件包 </h2>
	    <!-- 元数据 -->
        <div class="col-12 text-center border-bottom mt-2">2020-6-24 王浩</div>
        <!--   文章内容    -->
        <div class="content"><h2>java.nio包介绍</h2>
<p>Java NIO（New IO，也有人叫：Non Blocking  IO）是从Java1.4版本开始引入的一个新的IO API，其与原来的IO有同样的作用和目的，但是使用方式有很大的差别。</p>
<h2>什么是缓冲区？</h2>
<ol>
<li>
<p>缓冲区 是一个固定数据量的指定基本类型的数据容器。除内容之外，缓冲区还具有位置 和界限，其中位置是要读写的下一个元素的索引，界限是第一个应该读写的元素的索引。基本 Buffer 类定义了这些属性以及清除、反转 和重绕 方法，用以标记 当前位置，以及将当前位置重置 为前一个标记处。</p>
</li>
<li>
<p>每个非布尔基本类型都有一个缓冲区类。每个类定义了一系列用于将数据移出或移入缓冲区的 get 和 put 方法，用于压缩、复制 和切片 缓冲区的方法，以及用于分配 新缓冲区和将现有数组包装 到缓冲区中的静态方法。</p>
</li>
</ol>
<h4>我们可以将数据比作货物，将缓冲区比作箱子来理解。</h4>
<h2>缓冲区的一些应用</h2>
<ol>
<li>Java中I/O相关的两个包是java.io和java.nio，它们的最重要的区别就是java.io里面的类是面向流的（stream oriented），java.nio里面的类是面向缓存的（buffer oriented）。</li>
<li>面向流意味着一次读取一个或者一些字节，然后处理这些字节，在读取和处理这些字节时当前线程是阻塞的，不能干其他事情。</li>
<li>面向缓存意味着把一些字节读到缓存里面，选择了读取的字节之后当前线程可以去做其他事情，以后再去处理缓存里面的字节也可以，也就是线程非阻塞。</li>
</ol>
<h2>NIO包中的缓冲类</h2>
<h4>NIO包中提供了七个基本类型的缓冲类。这七个类如下：</h4>
<ol>
<li>Buffer: 一个用于特定基本类型数据的容器</li>
<li>ByteBuffer: 字节缓冲区</li>
<li>ByteOrder: 字节顺序的类型安全枚举</li>
<li>CharBuffer: 字符缓冲区</li>
<li>DoubleBuffer: 双精度缓冲区</li>
<li>FloatBuffer: 单精度缓冲区</li>
<li>IntBuffer: 整形缓冲区</li>
<li>LongBuffer: 长整形缓冲区</li>
<li>MappedByteBuffer: 直接字符缓冲区，其内容是文件的内存映射区域</li>
<li>ShortBuffer: short缓冲区</li>
</ol>
</div>
      </div>
    </div>
    <div class="col-2">
      <div class="container bg-white mt-5 mb-3 ">
        <h4 class="font-weight-normal pt-3  mb-3 text-center ">最新文章</h4>
        <div class="list-group list-group-flush pb-3 ">
          <a class="list-group-item text-dark" 
             href="../JavaApi/NioPackage.html">java.nio软件包 </a><a class="list-group-item text-dark" 
             href="../nio/nio.html">NIO的核心实现那些事儿！</a><a class="list-group-item text-dark" 
             href="../Study/Study_MarkDown.html">复习Markdown组件</a><a class="list-group-item text-dark" 
             href="../Anime/summer.html">夏季青春校园类</a><a class="list-group-item text-dark" 
             href="../hololive/Kagura.html">神楽Mea_Official</a><a class="list-group-item text-dark" 
             href="../hololive/aqu.html">湊-阿库娅Official</a>
          
          
          
          
          
          
          
          
          
          
        </div>
      </div>
    </div>
  </div>

</div>
<!--底部-->
<footer class="container-fluid  bg-light mt-1 py-3 text-center font-weight-light"> 
	达内教育-Java教研部 版权所有
</footer>

</body>
</html>